Multiple computers are often linked together into a computer network in order to communicate data and share computer memory and processing resources among several computers. In a typical network architecture, such as the ethernet network, the computers, referred to as nodes, are connected by means of a shared network communication bus in the form of an electrically conducting cable. The network communication bus may be accessed by any node attached to it in order to receive data from and transmit data to other nodes in the network.
Each node is connected to the network communication bus through a transceiver which converts digital data received from the computer as a binary number sequence into a binary level voltage signal in accordance with a selected code, such as the Manchester code. The transceiver also converts the binary level voltage signal from the network communication bus into a binary number sequence which is supplied to the computer.
Each transceiver communicates data to and from the network communication bus in the form of data packets of predefined length. Prior to transmission of a data packet, the transceiver generates a preamble signal, having a recognizable bit pattern, which is supplied to the network communication bus and to be detected by all the other nodes in the network. A data packet is then transmitted after the preamble signal which typically includes a destination address, a source address, protocol type, data and data checking sections. The destination address identifies the receiving node to which the communicated packet is addressed while the source address indicates the originating or transmitting node. Consequently, even though each node in the network detects that a data packet has been transmitted, only the node whose address matches the destination address in the transmitted packet, receives it. The protocol type information is required by the receiving node to properly interpret the contents of the data packet. The data section, containing the data to be communicated, may vary in length between a minimum and a maximum number of bits, according to the selected protocol. Finally, the data checking section of the packet contains the error detecting and/or correcting code. This code may, for example, be a cyclical redundancy code (CRC) which is derived from a modulo 2 division of the data in the data packet by a selected polynomial, known as a generator polynomial. The CRC, which is appended at the end of the data, is needed to perform error detection of the received data at the destination node.
In normal operation, all nodes in the network may attempt data transmission at any time. It is thus possible that two or more nodes may initiate transmission simultaneously. This condition, known as collision, requires that the data packets which appear on the network communication bus during the collision period be invalidated until all the nodes involved in the collision stop transmission. In order to accomplish this, a node which first detects the collision transmits a signal, known as a jam signal, to its transceiver in the form of a predetermined jam bit pattern. The transceiver converts the jam bit pattern into a data invalid signal which is supplied to the network communication bus. When a jam signal is received by a transceiver, it is passed to its associated node.
When a jam signal is recognized by the nodes in the network, each transmitting node aborts its transmission and enters into a collision wait state of random duration before attempting to transmit again.
Several nodes may be connected together by use of a local network interface to form a local network segment. The local network interface provides each node in the local network segment with access to both a local shared communication medium and a connection to the network communication bus. The use of a local network interface is desirable whenever the nodes in the local network segment communicate heavily among themselves but may also transmit data to and receive data from other nodes in the network.
FIG. 1 shows the architecture of a local network segment 10. In FIG. 1 each line may represent one or more physical connections, such as separate cables for data transmission and reception, data enabled status signals, and jam signal communication. Each local network segment 10 includes, by way of example, four nodes 40 denoted as ND0 through ND3 and a local network interface 20. Local network interface 20 includes four transceivers 30 (denoted TS0 through TS3, respectively) corresponding to nodes ND0 through ND3, and a logical block 70. A first output terminal of each of transceivers 30 is coupled to an input terminal of the corresponding one of nodes 40 via data transmitted lines 50. An output terminal of each of nodes 40 is coupled to respective first input terminals of transceivers 30 via data received lines 60. A second output terminal of each of transceivers 30 is coupled to respective input terminals of logic block 70 via lines 80. Respective output terminals of logic block 70 are coupled to second input terminals of transceivers 30 via lines 90. When used below, the terms received and transmitted refer to data communications from the viewpoint of the local network segment.
In operation, node ND0 may transmit data to the local network segment by delivering a data packet in the form of a binary data received sequence, such as RD0, to its associated transceiver TS0, via line 60. The transceiver 30 transforms the data received sequence RD0 into a corresponding data received voltage signal R.sub.-- DATA.sub.-- 0 which is supplied to logic block 70 via 80. Logic block 70 retransmits the data received voltage signal R.sub.-- DATA.sub.-- 0 via a local shared communication medium such as a data bus (not shown) to the transceivers TS1 through TS3 associated with the remaining three nodes ND1 through ND3. The data transmitted voltage signals T.sub.-- DATA.sub.-- 1 through T.sub.-- DATA.sub.-- 3 are converted by the respective transceivers TS1 through TS3 into the data transmitted sequences TD1 through TD3, respectively. While each node ND1 through ND3 detects the data packet in the form of the corresponding data transmitted sequence TD1 through TD3, only the node whose address matches the destination address of the data packet, processes the data packet further, in accordance with the protocol designated in the packet.
In addition to controlling transmission and reception of the data packets between the nodes in the local network segment, logic block 70 ensures that only one node is involved in transmission at a time. To accomplish this, logic block 70 arbitrates the data packet flow from all the nodes in accordance with a set of logical relations. The logical relations, which represent the data flow control logic, may be implemented inside logic block 70 as a gate array (not shown) configured to allow data packet transmission only if a single node is transmitting and to invalidate the transmitted data if a collision is detected. For example, if only two nodes, such as the nodes ND0 and ND1, are connected to local network interface 20, the logical equations that must hold for successful transmission from the node ND0 to the node ND1 are: EQU TD1=COL AND R.sub.-- DATA.sub.-- O (1)
where TD1 represents the data transmitted sequence supplied to the transceiver TS1 to the respective node ND1 and COL represents the state of collision with both node ND0 and ND1 attempting transmission simultaneously: EQU COL=(RD0 AND RD1 OR RD0 AND RD1 OR RD0 AND RD1) (2)
and where RDi ( i=0, . . . , 3 ) represent the data received sequences sent by the nodes ND0 through ND3 to their respective transceivers TS0 through TS3. The overbar denotes the logical complement.
If a third node, for example, node ND2 is connected to the local network interface 20, equations (1) and (2) become EQU TD1=COL AND (R.sub.-- DATA.sub.-- 0 OR R.sub.--DATA.sub.-- 2)(3) ##EQU1##
It is evident from equations (1)-(4) that the addition of new nodes to the local network segment 10 requires that substantial, and increasingly more complex, modifications be made to the data flow control logic inside logic block 70. Because each node 40 must be notified that a collision has occurred, typical implementations of local network interface 20 require that logic block 70 be supplied with separate data received, data transmitted, and collision detected signal terminals for each transceiver connection. Furthermore, the logic expansion required by the addition of new nodes 40 to local network interface 20 may exceed the capacity of the gate array in the logic block 70. Other known implementations multiplex the data received voltage lines, such as T.sub.-- DATA.sub.-- 0 through T.sub.-- DATA.sub.-- 3, by means of a decoder (not shown) to allow data packet transmission to each transceiver 30. In either event, the necessary hardware changes limit the addition of new nodes and make the process of expanding the local network segment 10 very costly.
It is thus desirable to provide a local network interface that would permit addition of new nodes to the local network segment 10 with the least possible modification of the transceiver connections and data flow control logic.